// 字节转换类
function byteHelper(value) {
  if (value === 0) {
      return '0 b';
  }
  const units = ['b', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
  const number = Math.floor(Math.log(value) / Math.log(1024));
  return (value / Math.pow(1024, Math.floor(number))).toFixed(2) + ' ' + units[number];
}
/**
* 类相加
* @param {Array} values - 类的数组
* @returns {String} 类的总和
*/
export function sizeAdd(values) {
  if (values.length === 0) return '0 b';

  const units = ['b', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
  const unitRegex = /[a-zA-Z]+$/;

  let valuesAdd = values.reduce((acc, val) => {
      const unitMatch = val.toString().match(unitRegex);

      // 如果没有匹配到单位，默认单位为字节 'b'
      const unit = unitMatch ? unitMatch[0].toLowerCase() : 'b';

      // 将单位列表中的单位也全部转换为小写进行比较
      const matchedUnit = units.find(u => u.toLowerCase() === unit);

      if (!matchedUnit) {
          return acc; // 如果单位不匹配，则跳过此值
      }

      const number = parseFloat(val.toString().replace(unitMatch ? unitMatch[0] : '', ''));

      if (isNaN(number)) {
          return acc; // 如果无法解析数字，则跳过此值
      }

      const multiplier = Math.pow(1024, units.indexOf(matchedUnit));

      return acc + number * multiplier;
  }, 0);

  console.log(valuesAdd);
  return byteHelper(valuesAdd);
}